4-5 w顫

有時候我們不只要比對字串,同時也要考慮字串出現的位置,此時就要使用定位點。在通用式裡,最常用的定位符號就是 ^ 和 $,其中 ^ 代表一個字串的開始位置,因此 ^xy 代表「以 xy 開始的字串」;而 $ 代表一個字串的結束位置,因此 xy$ 代表「以 xy 結束的字串」。請見下列範例:

Example 1: 04-通用運算式/regExp14.mstr1 = 'Chapter 5 is my favorite'; str2 = 'I like Chapter 2'; pat = '^Chapter'; fprintf('regexp(''%s'', ''%s'') = %d\n', str1, pat, regexp(str1, pat)); fprintf('regexp(''%s'', ''%s'') = %d\n', str2, pat, regexp(str2, pat));regexp('Chapter 5 is my favorite', '^Chapter') = 1 regexp('I like Chapter 2', '^Chapter') =

代表第一次比對成功,因為 ‘Chapter’ 是在字串變數 str1 的開始位置,但第二次比對就失敗了(因此傳回來空矩陣),因為 ‘Chapter’ 不是在字串變數 str2的開始位置。

以下是對於定位符號的列表與整理:

通用式說明及範例比對不成立之字串
^xy以 "xy" 開始的字串,例如 "xyz", "xyab"(若要比對 ^,請使用 \^)"axy", "bxy"
xy$以 "xy" 結尾的字串,例如 "axy", "abxy"(若要比對 $,請使用 \$)"xya", "xyb"

Hint
一般在 JavaScript、VBScript 或 UNIX 所使用的通用式,還可以支援另外兩種定位符號,分別是 \b 和 \B,其中 \b 可以比對文字邊界(Word Boundary),\B可以比對非文字邊界,但是目前在 MATLAB 7.x 並未支援這兩個定位符號。(各位可用 regExp15.m 來測試看看。)


MATLAB程式設計:進階篇